Skip to content

Conversation

@ipankr
Copy link
Contributor

@ipankr ipankr commented Oct 21, 2025

Summary

This PR creates a shared base binding for common Bluetooth LE radio hardware capabilities to avoid duplication between vendors and ensure consistent property naming across the Zephyr ecosystem.

Changes

  1. New Base Binding

    • Created dts/bindings/bluetooth/ble-radio.yaml with common BLE hardware properties
    • Properties prefixed with ble- for consistency
    • Ordered chronologically by Bluetooth Core Specification version (5.0, 5.1, 6.0)
  2. Updated Vendor Bindings

    Silabs:

    • Updated silabs,series2-radio.yaml to include base binding
    • Kept vendor-specific ble-tx-high-power-supported property

    Nordic:

    • Updated nordic,nrf-radio.yaml to include base binding
    • Renamed tx-high-power-supported to ble-tx-high-power-supported for consistency
  3. Silicon Labs Device Trees

    Updated all Series 2 SoCs with hardware-supported features:

    • EFR32xG21: 2M PHY, Coded PHY, TX High Power
    • EFR32xG22: 2M PHY, Coded PHY, CTE TX, CTE RX, TX High Power
    • EFR32xG24: 2M PHY, Coded PHY, CTE TX, CTE RX, Channel Sounding, TX High Power
    • EFR32xG27: 2M PHY, Coded PHY, CTE TX, TX High Power
    • EFR32xG29: 2M PHY, Coded PHY, CTE TX, TX High Power
  4. Nordic Device Trees

    Updated with consistent property naming:

    • nRF52820, nRF52833, nRF52840: Added ble-tx-high-power-supported
    • nRF54H20, nRF54L15, nRF54LM20: Renamed to ble-cs-supported
  5. Kconfig Integration

    Silabs - Added hardware capability flags (auto-detected from DT):

    • HAS_HW_EFR32_RADIO_BLE_2M
    • HAS_HW_EFR32_RADIO_BLE_CODED
    • HAS_HW_EFR32_RADIO_CTE_TX
    • HAS_HW_EFR32_RADIO_CTE_RX
    • HAS_HW_EFR32_RADIO_CS
    • HAS_HW_EFR32_RADIO_TX_HIGH_POWER

    Silabs HCI driver automatically selects controller features based on hardware capabilities.

    Nordic - Updated Kconfig to reference renamed properties:

    • HAS_HW_NRF_RADIO_CS uses ble-cs-supported
    • HAS_HW_NRF_RADIO_TX_PWR_HIGH uses ble-tx-high-power-supported

Testing

Verified on all affected hardware (11 board configurations):

  • All Silabs: XG21, XG22, XG24, XG27, XG29
  • All Nordic: nRF52820, nRF52833, nRF52840, nRF54H20, nRF54L15, nRF54LM20

Design Philosophy

This approach harmonizes devicetree bindings across vendors while respecting each vendor's driver architecture.

@ipankr
Copy link
Contributor Author

ipankr commented Oct 21, 2025

@jrintaha fyi

def_bool $(dt_nodelabel_bool_prop,radio,ble-2mbps-supported)

config HAS_HW_EFR32_RADIO_BLE_CODED
def_bool $(dt_nodelabel_bool_prop,radio,ble-coded-phy-supported)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need these intermediate symbols (HAS_HW_EFR32_RADIO_*)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think it is easier to define dependencies with these, like for example HAS_HW_EFR32_RADIO_CTE_RX

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a blocker, but I have always had some doubts about the benefit of adding new global helper symbols. They are sometime used to hide some logic (now or in further PR) and may make the reader work more difficult.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vendor specific configuration is moved to a separate file.

Signed-off-by: Ivan Pankratov <[email protected]>
Create a shared base binding (ble-radio.yaml) for common Bluetooth LE
radio hardware capabilities to avoid duplication between vendors and
ensure consistent property naming across the ecosystem.

Properties are prefixed with 'ble-' and ordered chronologically by
Bluetooth Core Specification version (5.0, 5.1, 6.0). Each property
indicates a hardware capability, not current enablement state.

Signed-off-by: Ivan Pankratov <[email protected]>
…-pins

Rename generic FEM binding to use 'radio-' prefix for consistency with
other radio bindings (radio.yaml, ble-radio.yaml).

Updated 3 board files, Nordic BLE controller HAL, documentation, and
test overlays. Added missing settle-time properties to pan1783a board.

Signed-off-by: Ivan Pankratov <[email protected]>
Rename GPIO coex binding to use 'radio-' prefix for consistency with
other radio bindings (radio.yaml, radio-fem-two-ctrl-pins.yaml).

Updated beacon sample overlay and coex documentation.

Signed-off-by: Ivan Pankratov <[email protected]>
Add migration guide and release notes entries for the radio-related
devicetree binding renames:
- generic-fem-two-ctrl-pins -> radio-fem-two-ctrl-pins
- gpio-radio-coex -> radio-gpio-coex
- tx-high-power-supported -> radio-tx-high-power-supported

Also document the new radio.yaml base binding for generic radio
hardware capabilities.

Signed-off-by: Ivan Pankratov <[email protected]>
@sonarqubecloud
Copy link

sonarqubecloud bot commented Nov 5, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants